from functools import partial

# 想在一个固定长度记录或者数据块的集合上迭代，而不是在一个文件中一行一行的迭代
RECORD_SIZE=2

# iter()函数，如果传递一个可调用对象和一个标记值，它会创建一个迭代器。
# 这个迭代器会一直调用传入的可调用对象直到它返回标记值
def demo_1():
    with open('../temp/shoplist.data', 'rb') as f:
        # partial用来创建一个每次被调用时从文件中读取固定数目字节的可调用对象, 标记值b''就是当到达文件结尾时的返回值
        records = iter(partial(f.read, RECORD_SIZE), b'')
        for r in records:
            print(r, end='\n')
        f.close()

if __name__== '__main__':
    demo_1()